package org.codeart.juc.visible;

public class SynchronizedDemo {

    // 使用 synchronized 关键字同样可以实现可见性
    public static boolean flag = true;
    
    public static void main(String[] args) throws InterruptedException {
        new Thread(() -> {
            while (flag) {
                // 套在外面不生效 获取锁资源之后才生效
                synchronized (SynchronizedDemo.class) {
                    // ...
                }
                // 输出语句也可以保证可见性 因为内部使用了同步代码块 获取了锁
//                System.out.println("666");
            }
            System.out.println("t1 thread ends");
        }, "t1").start();
        Thread.sleep(100);
        flag = false;
        System.out.println("main thread sets flag false");
    }

}
